package com.ruoyi.activity.service;


import com.baomidou.mybatisplus.extension.service.IService;
import com.ruoyi.common.core.domain.AjaxResult;
import com.ruoyi.model.activity.Activity;
import com.ruoyi.model.apply.Apply;
import com.ruoyi.model.apply.dto.ApplyInfoDto;

import java.util.List;

public interface IApplyService extends IService<Apply> {

    /**
     * 展示报名模板
     *
     * @param detailId 详情id
     * @param type     类型
     * @return AjaxResult
     */
    AjaxResult queryDetailApplicationTemplate(String detailId, String type);

    /**
     * 报名接口
     *
     * @param applyInfoDto 报名信息
     * @return AjaxResult
     */
    AjaxResult submitApply(ApplyInfoDto applyInfoDto);

    List<Object> selectByUser(int type, String userId, int status);

    /**
     * 查询报名信息
     *
     * @param id 报名信息主键
     * @return 报名信息
     */
    public Apply selectApplyById(String id);

    /**
     * 查询报名信息列表
     *
     * @param apply 报名信息
     * @return 报名信息集合
     */
    public List<Apply> selectApplyList(Apply apply);

    /**
     * 新增报名信息
     *
     * @param apply 报名信息
     * @return 结果
     */
    public int insertApply(Apply apply);

    /**
     * 修改报名信息
     *
     * @param apply 报名信息
     * @return 结果
     */
    public int updateApply(Apply apply);

    /**
     * 批量删除报名信息
     *
     * @param ids 需要删除的报名信息主键集合
     * @return 结果
     */
    public int deleteApplyByIds(String[] ids);

    /**
     * 删除报名信息信息
     *
     * @param id 报名信息主键
     * @return 结果
     */
    public int deleteApplyById(String id);


    /**
     * 获取参与的竞赛和活动列表
     *
     * @param type   type
     * @param status status
     * @param userId userId
     * @return List<Object></Object>
     */
    List<Object> selectListByUser(String type, String status, String userId);


    /**
     * 继续报名未提交的报名
     *
     * @param id     id
     * @param type   类型
     * @param userId 用户id
     * @return Apply
     */
    Apply goOnApplyById(String id, Integer type, String userId);

    /**
     * 重新报名接口(这个接口只会删除掉当前报名的这个信息)
     *
     * @param id     id
     * @param type   类型
     * @param userId 用户id
     * @return 是否成功
     */
    String anewApplyById(String id, String type, String userId);

}
